from 工程.九州项目.接收模块.基础配置.产品配置 import *
from 工程.九州项目.接收模块.基础配置.仪器配置 import *
from 工程.九州项目.接收模块.基础配置.参数配置 import *
from 工程.九州项目.接收模块.基础配置.通用方法配置 import *
from 工程.九州项目.接收模块.校准结果处理 import *


def 测试初始化():
    gy仪器.固本信号源.连接()
    gy仪器.跳本信号源.连接()
    gy仪器.微波信号源.连接()
    gy仪器.频谱仪.连接()
    gy产品.接收模块状态控制.板卡初始化('接收13模块','拉低')
    gy产品.接收模块状态控制.板卡初始化('接收46模块','拉低')
    gy产品.路由设置.路由初始化()
    gy方法.时间处理.延时(0.5)
    gy产品.路由设置.设置测试仪器路由()
    gy产品.路由设置.设置测试输出端口('IF1')
    gy仪器.固本信号源.设置幅度dBm(0+gy参数.固本补偿)
    gy仪器.固本信号源.调制开关('关')
    gy仪器.跳本信号源.设置幅度dBm(0+gy参数.跳本补偿)
    gy仪器.跳本信号源.调制开关('关')
    gy仪器.微波信号源.调制开关('关')
    gy仪器.频谱仪.设置触发开关('开')
    gy仪器.频谱仪.设置参考幅度('5dBm')
    gy方法.时间处理.延时(1)

def 滤波器特性测试(中频带宽='8MHz',频点='Fm'):
    if 频点=='Fm':
        测试频点=gy参数.Fm
    elif 频点=='Fh':
        测试频点=gy参数.Fh
    else:
        测试频点=gy参数.Fl
    gy产品.接收模块状态控制.设置模块中频带宽( 中频带宽)
    gy产品.接收模块状态控制.设置AGC衰减('无衰减')
    gy产品.接收模块状态控制.设置校准衰减('无衰减')
    gy仪器.微波信号源.设置频率(测试频点)
    gy仪器.微波信号源.设置幅度dBm(-40 + gy参数.微波源补偿)
    gy仪器.微波信号源.射频开关('关')
    gy仪器.跳本信号源.设置频率(测试频点 + 3670e6)
    gy仪器.跳本信号源.射频开关('开')
    gy仪器.固本信号源.设置频率(3600e6)
    gy仪器.固本信号源.射频开关('开')
    gy仪器.频谱仪.设置中心频率(70e6)
    gy仪器.频谱仪.设置分析带宽(0.1e6)
    gy仪器.频谱仪.设置视频带宽(1e6)
    gy仪器.频谱仪.设置每格幅度(10)
    if 中频带宽 == '8MHz':
        扫频带宽 = 50000000
    else:
        扫频带宽 = 100000000
    gy仪器.频谱仪.设置扫频带宽(扫频带宽)
    gy仪器.频谱仪.设置最大保持开关("开")
    gy方法.时间处理.延时(1)
    # gy仪器.频谱仪.设置寻峰值()
    # P0 = gy仪器.频谱仪.读幅度()
    扫描步进=75000
    for i in range (1060000000-(扫频带宽//2),1060000000+(扫频带宽//2),扫描步进):
        if i == (1060000000-(扫频带宽//2))+ 2*扫描步进:
            gy仪器.微波信号源.射频开关('开')
        gy仪器.微波信号源.设置频率(i)
        gy方法.时间处理.延时(0.002)
    读取波形=gy仪器.频谱仪.读波形()
    半屏长度=len(读取波形)//2
    全屏长度=len(读取波形)
    P0=读取波形[半屏长度]
    for i in range(半屏长度,0,-1):
        if P0-读取波形[i]>3:
            P3L=i+1
            break
    for i in range(半屏长度,0,-1):
        if P0-读取波形[i]>60:
            P60L=i
            break
    for i in range(半屏长度,全屏长度):
        if P0-读取波形[i]>3:
            P3R=i-1
            break
    for i in range(半屏长度,全屏长度):
        if P0-读取波形[i]>60:
            P60R = i
            break
    print(P3L,P3R,P60L,P60R)
    if 中频带宽=='8MHz':
        中频带宽3dB8M=(P3R-P3L)*(扫频带宽/全屏长度)/1e6
        gy方法.测试结果保存.结果保存(中频带宽3dB8M, '中频带宽3dB8M')
    else:
        中频带宽3dB24M=(P3R-P3L)*(扫频带宽/全屏长度)/1e6
        gy方法.测试结果保存.结果保存(中频带宽3dB24M, '中频带宽3dB24M')
    滤波特性测试结果=(P60R-P60L)/(P3R-P3L)
    gy方法.测试结果保存.结果保存(滤波特性测试结果,'滤波特性测试结果')



if __name__=="__main__":
    sys.UUTINFO = [0, 4]
    测试初始化()
    # 增益检测()
    # AGC衰减测试()
    # 校准控制测试()
    滤波器特性测试('24MHz',"Fm")
    # 第一镜频抑制测试()
    # 第二镜频抑制测试()
    # 中频带宽 = '8MHz'
    # 扫频带宽 = 50000000 if 中频带宽 == '8MHz' else 扫频带宽 = 100000000
    # print(扫频带宽)



    pass